Contract
オブジェクトを作成するのは容易です。
CallFunction
メソッドを使って CallContractFunction
オブジェクトを作成します。これにより、クライアントと ContractCall
オブジェクトを Create
async Task に渡すことで、適切なgasPrice、gasLimit、nonce、dataを含む新しい EthTransaction
を組み立てます。
スマートコントラクトを呼び出す例は以下の通りです。
SendTransactionMethod
を利用できます。
また、EthTransaction
の作成だけを行い、後で送信したい場合は、CallFunction
から直接 CallContractFunction
オブジェクトを利用できます。
CallFunction
メソッドは任意の数の引数を受け取れることに気づくでしょう。ABIや関数シグネチャで定義された順番通りに引数を渡してください。
string
型を使うか、Address
のインスタンスを作成することができます。文字列の場合は、必ず0x
で始まり、42文字の固定長である16進数文字列であることを確認してください。
int256
、uint8
、uint256
などの整数型には、System.NumericsのBigInteger
型を使用します。
byte16
やbyte32
などの型にはFixedByte
を作成する方法があります。
コントラクトでbytes
型が必要な場合は、任意の値を任意の長さのbyte[]
に変換できます。
C#でデータが16進数文字列として表現されている場合は、HexStringToByteArray()
関数を使って、その値を元のバイト配列に変換してください。
byte32[]
のようなバイト配列は、C#では単純にFixedByte[]
として作成します。
Contract.CallFunction
関数の引数として渡すかの例です。
Solidity構造体
string
やbool
などの基本的なデータ型は、C#でも同じデータ型を使用できます。
SendQuery<T>
メソッドを使ってコントラクトにクエリを送り、結果を型Tで受け取ります。
スマートコントラクトをクエリする例は以下の通りです。
QueryContract<T>
を使ってデリゲートを作成できます。
ContractDeployer
を利用できます。